06 - 开源实现横评
前置:02 到 05 篇的机制。本篇把这些机制落到具体项目上。
本篇回答:这十四个项目分别是什么形态、要拖多少外部依赖、以及在你按印象去选之前,有哪四件事已经变了。
全部数据 gh api 实测于 2026-08-26,许可证逐个打开许可证文件读,依赖从 pyproject.toml / package.json 实读。
一、四个选型陷阱
这三条不是"细节差异",是按旧印象动手会直接白花几天的断点。
pyproject.toml 或 package.json 看核心能力还在不在依赖里,而不是读 README 的功能列表。第三条可以直接验证:
# v1.0.0 里有 graph_store
curl -s https://raw.githubusercontent.com/mem0ai/mem0/v1.0.0/mem0/configs/base.py | grep -n graph_store
# 47: graph_store: GraphStoreConfig = Field(
# v2.0.0 里没有了
curl -s https://raw.githubusercontent.com/mem0ai/mem0/v2.0.0/mem0/configs/base.py | grep -n graph_store
# (无输出)
主分支 MemoryConfig 现在的全部字段是:vector_store / llm / embedder / history_db_path / reranker / version / custom_instructions。仓库里的 examples/graph-db-demo/ 还留着 Neo4j、Memgraph、Kuzu、Neptune 四个 notebook,但它们对应的已经不是当前开源包的能力。
1.1 第四条:阿里的 MemoryScope 改名迁仓了
modelscope/MemoryScope 现在 301 跳转到 agentscope-ai/ReMe,PyPI 包名也从 memoryscope 换成了 reme-ai(0.4.1.7)。旧仓库名在新 README 里被保留成一个历史分支 memoryscope_branch。
跳转是通的,所以这条不会让代码立刻挂掉 —— 它坑在搜索结果和二手资料:按 MemoryScope 搜到的教程,讲的是一个此后又改过两轮设计的版本。
二、十四个项目的基础事实
| 项目 | ★ | 许可证(实读) | 语言 | 最新版本 | 最近提交 |
|---|---|---|---|---|---|
mem0ai/mem0 | 64,075 | Apache-2.0 | Python | mem0ai 2.0.19(2026-08-24) | 2026-08-25 |
getzep/graphiti | 30,319 | Apache-2.0 | Python | graphiti-core 0.29.3(2026-07-27) | 2026-08-21 |
topoteretes/cognee | 30,268 | Apache-2.0 | Python | cognee 1.5.3(2026-08-23) | 2026-08-26 |
supermemoryai/supermemory | 29,074 | MIT | TypeScript | — | 2026-08-26 |
TencentCloud/TencentDB-Agent-Memory | 24,556 | MIT(gh 判 NOASSERTION) | TypeScript | — | 2026-08-26 |
memvid/memvid | 16,448 | Apache-2.0 | Rust | — | 2026-07-14 |
MemoriLabs/Memori | 16,224 | Apache-2.0(gh 判 NOASSERTION) | Python | memorisdk 3.2.8(2026-04-13) | 2026-08-21 |
NevaMind-AI/memU | 14,347 | Apache-2.0(文件名是 LICENSE.txt) | Python | — | 2026-08-26 |
EverMind-AI/EverOS | 12,438 | Apache-2.0 | Python | — | 2026-08-26 |
MemTensor/MemOS | 10,996 | Apache-2.0 | TypeScript | — | 2026-08-26 |
plastic-labs/honcho | 6,844 | AGPL-3.0 | Python | honcho-ai 2.3.0(2026-08-11) | 2026-08-25 |
agentscope-ai/ReMe | 3,354 | Apache-2.0 | Python | reme-ai 0.4.1.7(2026-08-13) | 2026-08-26 |
letta-ai/letta-code | 3,122 | Apache-2.0 | TypeScript | — | 2026-08-26 |
langchain-ai/langmem | 1,626 | MIT | Python | langmem 0.0.30(2025-10-27) | 2026-08-11 |
另外两个经常被列进候选、但值得先看一眼时间的:
| 项目 | ★ | 最近提交 | 说明 |
|---|---|---|---|
memodb-io/memobase | 2,858 | 2026-01-11 | 用户画像式记忆(Profile 形态)。已停更七个多月 |
BAI-LAB/MemoryOS | 1,560 | 2026-07-07 | EMNLP 2025 Oral 的配套实现,学术出身,工程完备度低于上表 |
2.1 许可证:一行需要过法务
十四个里十三个是 Apache-2.0 或 MIT,只有 plastic-labs/honcho 是 AGPL-3.0。
AGPL 的传染性触发条件和 GPL 不同:通过网络把它作为服务提供给用户,就构成"分发",要求提供完整对应源码。记忆层恰恰几乎总是以服务形态部署 —— 这不是理论风险。honcho 是这批里建仓最早的(2023-09-10),成熟度不低,但选它之前必须先过法务,不能按"反正是开源的"处理。
另外两行 gh 判不出许可证的(腾讯、Memori)是虚惊:许可证文件开头各自加了一段自己的声明,正文分别是标准 MIT 和 Apache-2.0,实读即可确认。
2.2 停更与错位
LangMem 那一行的错位要注意:仓库还在提交(2026-08-11),但 PyPI 最新版停在 2025-10-27 的 0.0.30,也就是十个月没发版,且始终没走出 0.0.x。它作为 LangGraph 生态里的记忆原语可用,但不适合当成独立的记忆基础设施依赖。
三、部署重量:要拖多少外部服务
这是横评里最有决策价值的一维 —— 它决定了 POC 阶段你要花半天还是三天。
pip install 之后直接能跑;ReMe 和 EverOS 更彻底 —— 记忆就是一堆本地 Markdown。第四档的成本高一个量级,但它买到的是别的档次给不了的东西:多个 Agent、多个用户共用同一份经验,且能按团队和角色控制谁看得到什么。3.1 存储依赖实读
| 项目 | 必选依赖 | 可选后端 |
|---|---|---|
| mem0 | qdrant-client、sqlalchemy(history 表)、一个 LLM、一个嵌入模型 | 26 个向量后端:pgvector、Milvus、Elasticsearch、Redis、Valkey、OpenSearch、Weaviate、Chroma、FAISS、MongoDB、Cassandra、S3 Vectors 等 |
| graphiti | neo4j>=5.26.0(写死在主依赖里)、openai | FalkorDB、Neptune、falkordblite(Python ≥3.12 的嵌入式方案);Kuzu 那条 extra 已注明上游无人维护、将被移除 |
| cognee | sqlalchemy+aiosqlite、lancedb、内嵌 kuzu、litellm、fastapi | Neo4j、Neptune、Postgres、Turso |
| LangMem | LangGraph 的 BaseStore | InMemoryStore(重启即丢)、AsyncPostgresStore(生产) |
| letta-code | git + 一个 memFS 服务端 | 默认指向 api.letta.com,可用 LETTA_MEMFS_BASE_URL 换成自建 |
| TencentDB Agent Memory | 四个服务(MemoryCore / MemoryKnowledge / MemoryPanel / MemoryProxy)+ 数据库 | 仓库带 deploy/ 与 Docker 编排,可整套自建 |
| ReMe | 无外部服务,记忆就是本地 Markdown | 需要时接向量后端 |
| honcho | Postgres | —(注意许可证,见 2.1) |
LangMem 的 InMemoryStore 那一行是踩坑高发处:官方 README 的快速开始用的就是它,重启进程记忆全丢。上生产必须换成 AsyncPostgresStore。
四、能力矩阵
| 能力 | mem0 | graphiti | cognee | 腾讯 | ReMe | letta-code | memory 工具 |
|---|---|---|---|---|---|---|---|
| 抽取式写入 | ✅ | ✅ | ✅ | ✅ 异步分层 | ✅ | 模型自管 | 模型自管 |
| 双时间轴(03 篇) | ❌ | ✅ 四字段 | 部分 | ❌ | ❌ | ❌ | ❌ |
| 作废而非删除 | ❌ 纯追加 | ✅ 边失效 | 部分 | 分层覆盖 | 文件改写 | git 历史 | ❌ |
| 图 / 多跳检索 | 仅托管版 | ✅ | ✅ | ✅ CodeGraph | ❌ | ❌ | ❌ |
| 混合检索(向量+BM25) | 有 reranker 模块 | ✅ 三路 + 五种重排 | ✅ | ✅ BM25+向量+RRF | 向量为主 | ❌ | ❌ |
| 多租户过滤 | ✅ 三维 filters | ✅ group_id 分区 | ✅ | ✅ 团队/用户/Agent 三级 ACL | 目录隔离 | 一 agent 一仓库 | 目录隔离 |
| 强制注入某条 | 自己实现 | 自己实现 | 自己实现 | 固定绑定 | 自己实现 | ❌ | ❌ |
| 版本 / 回滚 | history 表 | 靠时间字段回溯 | ❌ | ❌ | ❌ | ✅ git | ❌ |
| 人可直接读改 | ❌ | ❌ | ❌ | 有管理面板 | ✅ Markdown | ✅ | ✅ |
两处需要说明:
- graphiti 的
group_id是图分区字段,写在Edge基类上(group_id: str = Field(description='partition of the graph'))。它是必填的,比 mem0 那种"漏传就退化成全库检索"的可选 filter 结构上更安全 - "强制注入"这一行只有腾讯那一列有现成机制。它把 Chat Memory、Skill、Wiki、CodeGraph 统一注册成"记忆资产",再用固定绑定把某个资产钉死在某个 Agent 上 —— 这正是 04 篇第四节说的"安全类记忆绕过排序直接注入"。其余各列都得在应用层自己加一次按
user_id的精确查询 - 腾讯那一列的分层是这批里独一份:对话先存 L0 原文,异步管线再提炼成 L1 事实、L2 场景块、L3 长期画像;取的时候先用 L2/L3 快速铺上下文,需要具体事实才回落到 L1/L0,并且用条数、字符预算、超时三重上限挡住"记忆撑爆上下文"。这套结构对应本专题 02 到 04 篇的三步,是目前公开实现里做得最完整的一个
五、判断一个记忆项目还活着的四个信号
star 数在这个领域尤其不可靠 —— 上表里 star 最少的两个(letta-code 3,122、LangMem 1,626)一个是活跃主力,一个近乎停 滞。四个更可靠的信号:
| 信号 | 怎么看 | 为什么可靠 |
|---|---|---|
| 发版节奏,不是提交节奏 | PyPI / npm 上最新版本的发布日期 | 仓库有提交但十个月不发版,说明它不是被当成给外部用的库在维护(LangMem) |
| 核心能力在不在依赖里 | 打开 pyproject.toml / package.json | README 的功能列表可能描述的是托管版(mem0 的图记忆) |
| 有没有从主仓库搬走 | 看 README 首段和默认分支的文件列表;对着旧地址 curl -I 看有没有 301 | 只剩落地页或示例的仓库,star 数还挂在那儿(zep、letta);也有单纯改名的(MemoryScope → ReMe),跳转虽通但二手资料全是旧的 |
| 废弃标记 | 依赖注释、extra 的说明文字 | graphiti 在 Kuzu extra 上直接写了上游无人维护、将被移除 —— 比任何第三方评测都准 |
六、五条选型路径
换实现的成本要提前算。这一层没有任何跨实现的语义约定 —— 不像可观测性那一层至少有 gen_ai.* 和 OpenInference 两套规范可以对齐。mem0 的一条记忆是带 hash 和 metadata 的文本,graphiti 的一条记忆是带四个时间字段的图边,腾讯那套是分了四层的资产,两两之间都没有无损转换。把"以后换得掉"当成假设是危险的 —— 更现实的做法是在应用和记忆库之间自己留一层薄接口,只暴露 remember(...) / recall(...) 两个方法,把具体实现挡在后面。
七、小结
- 四个断点:Zep 的开源服务端已不存在、Letta 换了仓库换了语言、mem0 的图记忆在 2.0.0 从开源包里删了、阿里的 MemoryScope 改名迁成了 ReMe
- 判断项目活跃度看发版日期和依赖列表,不看 star —— 这个领域 star 与实际维护状态严重脱钩
- 部署重量分四档,第一档(零外部服务)能覆盖的场景比通常以为的多;第四档(腾讯那套四个服务)买到的是团队级共享与三级权限,是别的档次给不了的
- 许可证只有
plastic-labs/honcho是 AGPL-3.0,而记忆层几乎总以服务形态部署,选它之前必须过法务 - "强制注入安全类记忆"只有腾讯那套有现成机制(资产固定绑定),其余都要在应用层自己加
- 没有跨实现的数据格式,自己留一层薄接口是唯一现实的解耦手段
下一篇:07 - 失败模式、评测与选型,记忆怎么被污染、榜单数字为什么互相打架,以及一套落地顺序。
← 回到 专题索引